package com.xbts.system.domain.dto;

import java.math.BigDecimal;

import com.baomidou.mybatisplus.annotation.TableField;
import com.xbts.common.utils.bean.BeanUtils;
import com.xbts.system.domain.CnDataVolume;
import com.xbts.system.domain.CnOrderItem;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import javax.validation.constraints.NotEmpty;

import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;

import java.util.List;
import javax.validation.constraints.NotNull;

import com.xbts.common.annotation.Excel;
import com.xbts.common.core.domain.BaseEntity;

/**
 * 服务器配置对象
 *
 * @author xbts
 * @date 2023-08-23
 */
@Data
@ApiModel("服务器配置对象")
public class ServerConfigurationDTO extends BaseEntity {

    private static final long serialVersionUID = 1L;

    /**
     * 用户id
     */
    private String userId;

    /**
     * 服务器规格
     */
    private String flavor;

    /**
     * 服务器规格名称
     */
    private String flavorName;

    /**
     * 项目id
     */
    private String regionId;

    /**
     * 操作系统
     */
    private String platform;

    /**
     * Linux/Windows
     */
    private String osType;

    /**
     * 操作系统版本
     */
    private String osVersion;

    /**
     * 系统盘大小 单位：GB
     */
    private Integer rootVolumeSize;

    /**
     * 系统盘磁盘类型
     */
    private String rootVolumeType;

    /**
     * 带宽
     */
    private Integer bandwidthSize;

    /**
     * 带宽规格
     */
    private String bandwidthSpec;

    /**
     * 订购包年/包月产品的周期数
     */
    private Integer periodNum;

    /**
     * 订购包年/包月产品的周期类型（0天 2月 3年 4小时）
     */
    private String periodType;

    /**
     * 订购包年/包月产品的数量
     */
    private Integer subscriptionNum;

    /**
     * 镜像id
     */
    private String imageId;

    /**
     * 服务器名称
     */
    private String cloudserverName;

    /**
     * 创建服务器json
     */
    private String jsonStr;

    /** 修改价格 */
    private BigDecimal updatePrice;

    /** 原始价格 */
    private BigDecimal originalPrice;

    /** 优惠的金额 */
    private BigDecimal discountPrice;


    @TableField(exist = false)
    private List<CnDataVolume> dataVolumes;

    public CnOrderItem getCnOrderItem(){
        CnOrderItem cnOrderItem = new CnOrderItem();
        BeanUtils.copyBeanProp(cnOrderItem,this);
        return cnOrderItem;
    }
}